package chapter05

object Test08_Practice {

  def main(args: Array[String]): Unit = {

    // 练习1
    // 要求调用函数 fun(0,"",'0') 返回false，其他情况返true
    val fun = (i:Int,s:String,c:Char) =>{
      if(i==0&&s==""&&c=='0') false else true
    }
    // if的使用

    // 练习2 定义一个函数func，它接受了一个Int类型的参数，返回一个函数，返回 f1，他返回的函数
    // f1 接受一个String类型的参数，同样返回一个函数 f2，函数f2接受一个
    // char类型的参数，返回一个Boolean 的值
    // 要求调用函数func(0)("")('0')得到的返回值false，其他情况均返回true
    def func(i:Int):String=>Char=>Boolean = {
      def f1(s:String):Char=>Boolean = {
        def f2(c:Char):Boolean={
          if(i==0&&s==""&&c=='0') false else true
        }
        f2
      }
      f1
    }
    // 尝试简写
    def func1(i:Int):String=>Char=>Boolean = {
      (s:String)=>{
        (c:Char)=>if(i==0&&s==""&&c=='0') false else true
      }

    }
    // 简写
    def func2(i:Int):String=>Char=>Boolean=s=>c=>if(i==0&&s==""&&c=='0') false else true

    println(func2(0)("")('0'))

    // 柯里化
    def func3(i:Int)(s:String)(c:Char):Boolean = if(i==0&&s==""&&c=='0') false else true

    println(func3(0)("")('0'))
  }

}
